One of the most critical needs for computing platforms involves that of mass storage. Mass storage has typically been implemented as hard disk drives connected to an internal bus, or backplane, of an individual workstation. For example, SCSI or IDE drives, that range from hundreds of megabytes to gigabytes, are attached to controller interface cards or chips that plug into a workstation's bus. This type of local mass storage is accessed by way of the workstation's operating system which recognizes the filesystem commands generated by user applications and translates them into low-level bus protocols for accessing the hardware of the local mass storage. These hardware accesses typically are performed in predetermined block sizes and are, therefore, often called block protocols. With the advent of networks and networked computers, individual workstations were able to utilize mass storage devices on remotely located servers in addition to any local mass storage. The use of networked servers, however, requires that the workstations (or clients) and servers communicate via methods that include the overhead of a distributed filesystem (e.g., NFS) and any layered networked protocols (e.g., TCP/IP). Only the server is able to access its own local storage using low-level, or block, commands.
Networked attached storage (NAS) and storage area networks (SANs) are two recent technologies that attempt to allow computers to access network-connected hard disk drives and other mass storage devices using block-level commands so that the networked storage appears to be accessed as if it were physically attached to the workstation. In a NAS, the storage device connects directly to the network medium and does not require an intermediate server to provide access to the storage. In a SAN, a separate network of storage devices forms storage space that is allocated to different workstations and this separate network is itself connected to the network medium which connects the different workstations.
Conventional SANs do not perfectly solve all the mass storage needs for an enterprise. In particular, maintenance and provisioning of the storage space within the conventional SAN is difficult to accomplish and wasteful of the physical resources. To address these concerns, many recent developments in this field have involved virtualizing the storage space so that there is little, or no, correlation between the physical disk drive devices where the data actually resides and the logical disk drive devices which are the targets for a workstation's data access request. One such currently-produced product that is known in the industry and provides a substantially virtualized view of the storage space within a SAN is the MAGNITUDE® SAN manufactured by Xiotech Corporation.
The MAGNITUDE® SAN aggregates physical drives into a centralized “virtualized” storage pool and has the ability to stripe across and utilize all available space in a centralized storage pool. From this pool, a user carves out storage into “virtualized disks” and assigns that storage to whichever workstation that needs it. Within the SAN, the workstations see the MAGNITUDE® SAN's virtual disks as Logical Unit Numbers (LUNs). Within MAGNITUDE®SAN, virtualization refers to different levels of logical constructs rather than to physical storage devices (e.g. SCSI hard disk drives).
The basic MAGNITUDE® SAN system includes up to 32 SCSI hard drives on plural SCSI busses, although an expansion box is available to double the system size. A configurable number of virtual disks and virtual RAID devices (or arrays) are arranged across these drives. A virtual disk can comprise one or more of the virtual RAID devices. Each of these virtual disks are presented to one or more remote workstations on a Fibre Channel network as an addressable disk drive that appears and acts like local storage (i.e., an available local drive).
Conventional RAID arrays are well-known and according to the typical rules defining various RAID levels, data is “striped” across more than one physical drive. A “stripe” refers to the number of disk sectors written to each physical drive before data is written to the next drive in the RAID array. Each drive is divided into stripes with data being written to the first stripe in each of the drives and then to the second stripe in each drive, until the drives have reached capacity. Depending on the particular level of RAID being used, stripes can be mirrored or can have parity stripes interspersed among the data stripes in different patterns.
One recent extension to conventional RAID is that more than one similar RAID device can be arrayed across the same physical disks. In this environment, each physical drive is identically partitioned into multiple partitions irrespective of the available capacity. One RAID device is arrayed across each of similarly numbered partitions among the physical drives; another RAID device can be arrayed across other similarly numbered partitions among the same physical drives. The rules and techniques for striping and mirroring remain the same, the difference being that the partitions are considered as the boundaries of a RAID device rather than the physical drives themselves.
Within the MAGNITUDE® SAN system, however, RAID devices are “virtualized” arrays as well. For example, when a user provisions a new virtualized disk, the selected RAID level may specify that two data stripes will occur and then the third stripe will be a parity stripe. In a traditional RAID array, this would mean that three physical hard drives are used. However, in MAGNITUDE® SAN, the “virtualized” RAID device can use all the physical devices (e.g., 30) having sufficient capacity to stripe the data and parity irrespective of the selected RAID level. The striping occurs according to the selected RAID level but is not dependent on the particular physical arrangement of the drives When a user provisions a new virtualized disk, a size is specified. The specified size is divided by the number of available physical drives to determine the maximum amount of space needed on each physical drive for the virtualized disk. Those physical drives that have sufficient capacity are made part of a virtualized RAID device. If a physical drive does not have the required capacity, then that physical drive is not included in the virtualized RAID device.
The MAGNITUDE® SAN is responsible for presenting the available virtualized disks as addressable devices on the Fibre Channel fabric. As a result, the remote workstations need only generate a typical block-level command (e.g., SCSI-3 command) to access blocks on an available logical drive. The MAGNITUDE® SAN, however, receives this conventional protocol request and converts it into a virtual request packet (VRP) for internal processing. The MAGNITUDE® SAN internally unencapsulates, parses and processes a VRP message utilizing translation tables in order to eventually generate SCSI commands to access multiple SCSI devices.
The MAGNITUDE® SAN first translates the data request within the VRP message to a request involving the particular virtualized disk that corresponds to that target drive for that requester (e.g., Fibre Channel device #7 requests access to their E: drive which corresponds to virtual disk 71). The MAGNITUDE® SAN then translates the identified virtualized disk data request into a request for the specified data from a particular virtualized RAID device on which the virtualized disk is arrayed (e.g., virtualized RAID device 37 corresponds to virtualized disk 71); and another translation then takes place to convert the data request into appropriate sector requests from individual, physical SCSI hard drives that make up the particular virtualized RAID device (e.g., virtualized RAID device 37 is comprised of physical SCSI drives 1, 3, 5, 7, 15, 16, 18, 19, 24, 26, and 30; and the requested data is within sectors striped on physical SCSI drives 18, 19, 24 and 26).
The MAGNITUDE® SAN enforces access controls at the virtualized disk level. Individual virtualized disks can be assigned to a specific workstation to allow the workstation and its storage to be isolated from another workstation and its storage.
Within the MAGNITUDE® SAN system, for example, there is a single controller that performs the many levels of translations needed to permit receiving a request involving a virtualized drive and actually performing data accesses to multiple physical devices. Thus, while the use of RAID provides some failure protection for the data, fail-over or fail-safe behavior is not implemented at the system level as the controller is a single point of failure.
There remains the need, therefore, for a virtualized SAN system that includes plural controllers in order to provide fault-tolerance and fail-over operation in a manner which benefits performance, is simple to implement, costs less than specially designed redundant processor systems, and is easily extensible. In particular, there remains the need to easily and seamlessly redistribute virtual disks owned by a failed controller to another, back-up controller.